926. Формула Герона
Задано стороны a, b,
c, d и диагональ f выпуклого
четырехугольника. Определите площадь четырехугольника, используя
вспомогательную функцию вычисления площади треугольника по формуле Герона.
Вход. В одной стоке задано 5 чисел a, b, c, d,
f (0 < a, b, c, d,
f ≤ 100), как показано на
рисунке.
Выход. Выведите
площадь четырехугольника с 4 десятичными знаками.
Пример
входа |
Пример
выхода |
3 4 4 2 5 |
9.7997 |
геометрия
Площадь
треугольника вычисляется по формуле Герона
S =
где p – полупериметр.
Площадь
четырехугольника вычисляем как сумму площадей двух треугольников со сторонами a, b,
f и c, d, f.
Реализация алгоритма
Функция Heron вычисляет площадь треугольника по формуле
Герона.
double Heron(double a,double b, double c)
{
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
Основная часть программы. Читаем
входные данные, вычисляем и выводим площадь четырехугольника.
scanf("%lf %lf %lf %lf %lf",&a,&b,&c,&d,&f);
res = Heron(a,b,f) + Heron(c,d,f);
printf("%.4lf\n",res);
Реализация при помощи iostream
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace
std;
double a, b, c, d, f, P1, P2, S1, S2, Sum;
int main(void)
{
cin >> a >> b >> c >>
d >> f;
P1 = (a + b + f) / 2;
P2 = (d + c + f) / 2;
S1 = sqrt (P1 * (P1-a) * (P1-b) * (P1 - f));
S2 = sqrt (P2 * (P2-d) * (P2-c) * (P2 - f));
Sum = S1 + S2;
cout << fixed << setprecision(4);
cout << Sum <<endl;
return 0;
}
Реализация – класс треугольник
#include <stdio.h>
#include <math.h>
class Triangle
{
public:
double a, b,
c;
Triangle(double
a, double b, double
c)
{
this->a
= a;
this->b
= b;
this->c
= c;
}
double
Perimeter()
{
return a +
b + c;
}
double Area()
{
double p =
Perimeter() / 2;
return
sqrt(p * (p - a) * (p - b) * (p - c));
}
};
int main(void)
{
double a, b,
c, d, f;
scanf("%lf
%lf %lf %lf %lf",&a,&b,&c,&d,&f);
Triangle t1(a,b,f);
Triangle t2(c,d,f);
double res =
t1.Area() + t2.Area();
printf("%.4lf\n",res);
return 0;
}
Java реализация
import
java.util.*;
public class
Main
{
public static double Heron(double a,double b, double c)
{
double p =
(a + b + c) / 2.0;
return
Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public static void
main(String []args)
{
Scanner con = new
Scanner(System.in);
double a =
con.nextDouble();
double b =
con.nextDouble();
double c =
con.nextDouble();
double d =
con.nextDouble();
double f =
con.nextDouble();
double res
= Heron(a,b,f) + Heron(c,d,f);
System.out.printf(Locale.US,"%.4f\n",res);
con.close();
}
}
Java реализация – класс
треугольник
import
java.util.*;
class Triangle
{
double a, b,
c;
public
Triangle(double a, double
b, double c)
{
this.a = a;
this.b = b;
this.c = c;
}
public double Perimeter()
{
return a +
b + c;
}
public double Area()
{
double p =
Perimeter() / 2;
return
Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
}
public class
Main
{
public static void
main(String []args)
{
Scanner con = new
Scanner(System.in);
double a =
con.nextDouble();
double b =
con.nextDouble();
double c =
con.nextDouble();
double d =
con.nextDouble();
double f =
con.nextDouble();
Triangle t1 = new
Triangle(a,b,f);
Triangle t2 = new
Triangle(c,d,f);
System.out.printf(Locale.US,"%.4f\n",t1.Area() + t2.Area());
con.close();
}
}